package juc.cyclicbarrier;

import java.util.concurrent.CyclicBarrier;

/**
 * 游客线程
 */
public class Visitor extends Thread {
	
	private String visitorName; // 游客姓名
	
	private CyclicBarrier cyclicBarrier; // 公共屏障点（公园检票口）
	
	Visitor(String visitorName, CyclicBarrier cyclicBarrier) {
		this.visitorName = visitorName;
		this.cyclicBarrier = cyclicBarrier;
	}
	
	@Override
	public void run() {
		System.out.println(System.currentTimeMillis() + "\t" + visitorName + "到公园门口了，在等待其他人" );
		
		// 等待其他人
		try {
			cyclicBarrier.await(); // 阻塞等待
//			cyclicBarrier.await(2, TimeUnit.SECONDS); // 超时等待
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		// 游客进入公园之后的后续动作
		String action = "";
		if(visitorName.equals("zhangsan")
			|| visitorName.equals("wangwu")) {
			action = "拍照";
		} else if(visitorName.equals("lisi")
			|| visitorName.equals("zhaoliu")) {
			action = "欣赏景点";
		} else {
			action = "玩微信";
		}
		System.out.println(System.currentTimeMillis() + "\t 员工：" + visitorName + " 进入公园之后在 " + action);
	}

}
